package com.exm.collectcodenew.juc.locksuport;

import java.util.concurrent.locks.LockSupport;

public class LockSuportInterrupt {
    public static void main(String[] args) throws InterruptedException {
        Thread thread= new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println (" child thread begin park '");
                // 调用park方法， 挂起自己， 只有被中断才会退出循环。即使调用unpark(thread)子线程也不会结束
                while (Thread.currentThread ().isInterrupted ()) {
                    LockSupport.park();
                }
                System.out.println ( "child thread unpark !");
            }
        }) ;
        //启动子线程
        thread.start();
        // 主线程休眠ls
        Thread.sleep (1000 );
        System.out.println ("main thread begin unpark !" ) ;
        // 中断子线程  调用park 方法后的线程被中断后会返回，
        //注意：因调用park() 方法而被阻塞的线程被其他线程中断而返回时并不会抛出InterruptedException 异常。
        //因调用wait()方法而被阻塞的线程被其他线程中断而返回时会抛出InterruptedException 异常。
        thread.interrupt();
    }
}
